package com.design.pattern.createmode.singleton;

/**
 * 创建型模式-单例模式-懒汉模式4
 * @author yll
 * @version 1.0.0
 * @date 2024/03/14 14：42
 * @desc 双重锁同步锁单例模式,单例实例在第一次使用的时候进行创建，这个类是线程安全的，使用的是 volatile + 双重检测机制来禁止指令重排达到线程安全
 * */
public class SingletonExample_01_04 {

    private SingletonExample_01_04(){}

    //单例对象 volatile + 双重检测机制来禁止指令重排
    private static volatile SingletonExample_01_04 instance = null;

    public static SingletonExample_01_04 getInstance(){
        if(instance == null){
            synchronized (SingletonExample_01_04.class){
                if(instance == null){
                    instance = new SingletonExample_01_04();
                }
            }
        }
        return instance;
    }
}
